﻿// 4386. 关键连接.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>


/*


给定一个 N
 个点的无向图。

点的编号为 0∼N−1
。

图中不含重边和自环，但不保证连通。

如果一条边 L
 满足，至少存在两个点 A
 和 B
，它们之间的所有连通路径都必须经过边 L
，则称 L
 是一条关键连接（critical links）。

可以发现，删除一条关键连接后，会产生两个互不相交的子图，每个子图内的任意两点都是连通的。

例如，下图中共包含 3
 个关键连接：0−1
、3−4
、6−7
。

QQ截图20220330162530.png

现在，请你找出给定图的所有关键连接。

输入格式
输入包含多组测试数据。

每组数据第一行包含整数 N
。

接下来 N
 行，按随机顺序，每行描述一个点的信息，首先包含一个整数 p
，表示描述点的编号，然后包含一个用括号括起来的（可参考样例）整数 c
，表示与点 p
 直接相连的点的数量，最后包含 c
 个整数，表示与点 p
 直接相连的点的编号。

每组数据输入完毕后，还会包含一个空行。

输出格式
每组数据第一行输出 x critical links，其中 x
 表示关键连接的数量。

接下来 x
 行，每行描述一个关键连接，格式为 a - b。

注意输出时，应满足 a<b
，并且按 a
 从小到大的顺序输出所有关键连接，a
 相同，则优先输出 b
 更小的关键连接。

每组数据输出完毕后，输出一个空行。

数据范围
每个输入最多包含 10
 组数据。
0≤N≤1000
,
所有点的编号范围 [0,N−1]
。
边的总数量不超过 105
。

输入样例：
8
0 (1) 1
1 (3) 2 0 3
2 (2) 1 3
3 (3) 1 2 4
4 (1) 3
7 (1) 6
6 (1) 7
5 (0)

0

输出样例：
3 critical links
0 - 1
3 - 4
6 - 7

0 critical links

*/
int main()
{
    std::cout << "Hello World!\n";
}

 